#ifndef OPENGL_BUFFER_H
#define OPENGL_BUFFER_H

#include "Buffer.h"
namespace HS {

	class GLVertexBuffer : public VertexBuffer 
	{
	public:
		virtual ~GLVertexBuffer();
		virtual void Bind() const override;
		virtual void UnBind() const override;
		GLVertexBuffer(float* vertics, unsigned int size);

		virtual const BufferLayout& GetLayout() const override { return m_Layout; };
		virtual void SetLayout(const BufferLayout& layout) override { m_Layout = layout; };
	private:
		unsigned int m_Handle;
		BufferLayout m_Layout;
	};

	class GLIndexBuffer : public IndexBuffer
	{
	public:
		virtual ~GLIndexBuffer();
		virtual void Bind() const;
		virtual void UnBind() const;
		GLIndexBuffer(unsigned int* indices, uint32_t count);
		virtual uint32_t GetCount() const { return m_Count; }
	private:
		unsigned int m_Handle;
		uint32_t m_Count;
	};
}

#endif